package com.zzt.zt_edittextinput.util;

import android.text.InputFilter;
import android.text.Spanned;

/**
 * @author: zeting
 * @date: 2022/3/22
 * 禁止输入两个零
 */
public class NumberDoubleZeroFilter implements InputFilter {
    public static final String TAG = NumberDoubleZeroFilter.class.getSimpleName();

    public NumberDoubleZeroFilter() {
    }

    /**
     * 按API文档中的注释来理解：当缓冲区的start至end区域对应的source要替换dstart至dend区域对应的des时，回调该方法。
     * 返回一个charSequence来替换source或返回null表示接受原本的source。
     * 我们来看看具体的字段含义，可以分为两组来理解：
     * source 类型 CharSequence ：输入框本次变化后新增的内容，若是删除动作，则为空字符
     * start 类型 int：source对应的起始索引，始终为0
     * end 类型 int：source对应的结尾索引，为source的length-1
     * <p>
     * dest 类型 Spanned：本次输入将要被replace的区域内容
     * dstart 类型 int：将要被replace的区域内容起始索引
     * dend 类型 int：将要被replace的区域内容结尾索引
     */
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        if (dest.length() == 1) {
            if (source.length() >= 1) {
                if (dest.charAt(0) == '0' && source.charAt(0) == '0') {
                    return "";
                }
            }
        } else if (dest.length() == 0 && source.length() == 1 && source.charAt(0) == '.') {
            return "";
        }
        return null;
    }
}